﻿using System;
using System.Collections.Generic;
using System.Text;

namespace AlgorithmTest
{
    public class T_0008_ReverseString
    {
        // 反转字符串

        // 编写一个函数，其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。
        // 不要给另外的数组分配额外的空间，你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。

        // 提示：
        //  1 <= s.length <= 10^5
        //  s[i] 都是 ASCII 码表中的可打印字符

        public void Test()
        {
            var s = new char[] { 'H' };
            ReverseString(s);
            Console.WriteLine(string.Join(',', s));
            Console.Read();
        }
        
        // 双指针
        public void ReverseString(char[] s)
        {
            char temp;
            int l = 0, r = s.Length - 1;
            while (l < r)
            {
                temp = s[r];
                s[r] = s[l];
                s[l] = temp;
                l++;
                r--;
            }
        }

        public void ReverseString1(char[] s)
        {
            char temp;
            for (int i = 0; i < s.Length / 2; i++)
            {
                temp = s[i];
                s[i] = s[s.Length - 1 - i];
                s[s.Length - 1 - i] = temp;
            }
        }
    }
}
